package top.taooc.registry;

import top.taooc.config.RegistryConfig;
import top.taooc.model.ServiceMetaInfo;

import java.util.List;

/**
 * @author songtao@guishangyi.cn
 * @date 2024年07月31日 16:09:46
 * @packageName top.taooc.registry
 * @className Registry
 * @Menu 注册中心
 */
public interface Registry {

    /**
     * 初始化
     * @param registryConfig
     */
    void init(RegistryConfig registryConfig);

    /**
     * 注册服务（服务端）
     * @param serviceMetaInfo
     * @throws Exception
     */
    void register(ServiceMetaInfo serviceMetaInfo) throws Exception;

    /**
     * 注销服务（服务端）
     * @param serviceMetaInfo
     */
    void unRegister(ServiceMetaInfo serviceMetaInfo);

    /**
     * 服务发现（获取某服务的所有节点，消费端）
     * @param serviceKey
     * @return
     */
    List<ServiceMetaInfo> serviceDiscovery(String serviceKey);

    /**
     * 服务销毁
     */
    void destory();
}
